// Copyright (C), 2012-2018, Sichuan Xiaoka Technology Co., Ltd.
package utils;


/**
 * 缓存工具类
 *
 * @author 李杰
 */
public class RedisUtils {

//    /**
//     * 获取redis分布式锁
//     * @param connection redis连接
//     * @param lockName key组装名称
//     * @param acquireTimeout 锁定时长
//     * @param lockTimeout 过期时间
//     * @return redis分布式锁
//     */
//    public static String acquireLockWithTimeout(RedisConnection connection, String lockName, long acquireTimeout, long lockTimeout) {
//        //锁的值
//        String identifier = UUID.randomUUID().toString();
//        //锁的键
//        String lockKey = "lock:" + lockName;
//        //锁的过期时间
//        int lockExpire = (int) (lockTimeout / 1000);
//        //尝试获取锁的时限
//        long end = System.currentTimeMillis() + acquireTimeout;
//        //判断是否超过获取锁的时限
//        while (System.currentTimeMillis() < end) {
//            //判断设置锁的值是否成功
//            if (connection.setNX(lockKey.getBytes(), identifier.getBytes())) {
//                //设置锁的过期时间
//                connection.expire(lockKey.getBytes(), lockExpire);
//                //返回锁的值
//                return identifier;
//            }
//            //判断锁是否超时
//            if (connection.ttl(lockKey.getBytes()) == -1) {
//                connection.expire(lockKey.getBytes(), lockExpire);
//            }
//            //等待1秒后重新尝试设置锁的值
//            try {
//                Thread.sleep(1000);
//            } catch (InterruptedException ie) {
//                Thread.currentThread().interrupt();
//            }
//        }
//        // 获取锁失败时返回null
//        return null;
//    }
//
//    /**
//     * 释放redis分布式锁
//     * @param connection redis连接
//     * @param lockName 锁key
//     * @param identifier 锁value
//     */
//    public static void releaseLock(RedisConnection connection, String lockName, String identifier) {
//        //锁的键
//        String lockKey = "lock:" + lockName;
//        if (identifier.equals(new String(connection.get(lockKey.getBytes())))){
//            //在Redis事务中释放锁
//            connection.del(lockKey.getBytes());
//        }
//    }

}
